package DTO;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.HashSet;
import java.util.Set;

import model.Oferta;
import model.Publicacion;
import model.Subasta;
import model.Usuario;

public class SubastaDTO extends PublicacionDTO {
	private int precioMinimo;
	private String fechaFin;
	private Set<OfertaDTO> ofertas;

	public int getPrecioMinimo() {
		return precioMinimo;
	}

	public void setPrecioMinimo(int precioMinimo) {
		this.precioMinimo = precioMinimo;
	}

	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

	public Set<OfertaDTO> getOfertas() {
		return ofertas;
	}

	public void setOfertas(Set<OfertaDTO> ofertas) {
		this.ofertas = ofertas;
	}

	public SubastaDTO(Subasta subasta) {
		super(subasta);
		DateFormat dfDefault = DateFormat.getInstance();
		this.setPrecioMinimo(subasta.getPrecioMinimo());
		this.setFechaFin(dfDefault.format(subasta.getFechaFin()));
		this.setOfertas(new HashSet<OfertaDTO>());
		this.generateDtosOfertas(subasta.getOfertas());
	}

	private void generateDtosOfertas(Set<Oferta> ofertas) {
		for (Oferta oferta : ofertas) {
			this.getOfertas().add(oferta.toDTO());
		}

	}

	public Publicacion toModelObject(Usuario usuario) throws ParseException {
		DateFormat dfDefault = DateFormat.getInstance();
		Subasta sub = new Subasta(this.getPrecioMinimo(), dfDefault.parse(this
				.getFechaFin()), this.getDescripcion(), this.getId(), usuario);
		for (OfertaDTO oferta : this.getOfertas()) {
			sub.getOfertas().add(oferta.toModelObject(sub));
		}
		return sub;
	}

}
